Le registre et le LMS d'UniLearn ne contiennent pas les mêmes identifiants étudiants. L'équipe a besoin de plusieurs rapports, chacun apportant une réponse différente à la question « Quelles lignes sources doivent apparaître ? »
Réutiliser la base de données du Lab 6
Si vous avez déjà exécuté lab6_7_setup.sql au Lab 6, conservez ces données. Sinon, ouvrez dans pgAdmin le fichier d'installation partagé fourni par votre tuteur et exécutez-le une fois. Sélectionnez lab6_7 dans chaque nouvelle connexion de l'outil de requête.
Commencer par la jointure que vous connaissez
- Inspectez
studentsetlms_roster: 22 identifiants du registre et 6 identifiants LMS. - Exécutez la jointure INNER JOIN selon la règle de correspondance du Lab 6.
- Identifiez les quatre identifiants présents dans les deux sources.
- Expliquez pourquoi ce résultat ne peut constituer une liste complète issue de l'une ou l'autre des sources.
Cinq demandes de rapport
Lister les comptes partagés ; conserver chaque étudiant du registre ; conserver chaque compte LMS ; réconcilier les deux sources ; générer les options étudiant–cours. Vous écrirez des requêtes INNER, LEFT, RIGHT, FULL et CROSS JOIN pour ces demandes.
SET search_path TO lab6_7;
SELECT s.student_id AS registry_id, s.student_name,
r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
ON s.student_id = r.student_id
ORDER BY s.student_id;Vérifier les identifiants correspondants
Quatre lignes : S101, S102, S105 et S121. Chaque identifiant est unique dans les deux tables, donc chaque paire correspondante apparaît une seule fois. Ce rapport ne contient que les comptes partagés.
Uma (S121) possède un compte LMS bien qu'elle n'ait aucun cours suivi. Une correspondance de comptes ne prouve pas la participation à un cours.
Inspecter les deux sources
La liste LMS est un import non validé. Elle n'a volontairement pas de clé étrangère vers students, donc S901 et S902 ne peuvent exister que dans cette source.
SET search_path TO lab6_7;
SELECT student_id, student_name
FROM students
ORDER BY student_id;
SELECT student_id, lms_name
FROM lms_roster
ORDER BY student_id;| ID LMS | Nom LMS | Dans le registre ? |
|---|---|---|
| S101 | Alice Wong | Oui |
| S102 | Ben Lau | Oui |
| S105 | Emma Li | Oui |
| S121 | Uma Shah | Oui |
| S901 | Visiteur importé A | Non |
| S902 | Visiteur importé B | Non |
L'installation partagée contient également 8 cours, 37 inscriptions, 8 devoirs et 30 soumissions pour les tâches suivantes. Tous les enregistrements sont fictifs.
Lire la demande avant de choisir une jointure
| Demande | Résultat requis |
|---|---|
| Comptes partagés | Uniquement les paires d'identifiants qui correspondent. |
| Couverture du registre | Chaque étudiant du registre, même sans compte LMS. |
| Audit de l'import LMS | Chaque compte LMS importé, même sans correspondance dans le registre. |
| Réconcilier les deux systèmes | Les comptes partagés et les enregistrements présents dans une seule des deux sources. |
| Planification des cours | Chaque étudiant sélectionné associé à chaque cours sélectionné. |
Le Lab 6 a établi comment les paires correspondantes forment des lignes. Dans ce lab, modifiez le type de jointure pour contrôler les lignes sans correspondance ou générer toutes les combinaisons, puis vérifiez ce que représente chaque ligne de résultat.